import def from "./def";
import defineReactive from "./defineReactive";

/**
 * Observer：将一个正常的object转换成每个层级的属性都是响应式的object
 */
export default class Observer {
  constructor(obj) {
    def(obj, '__ob__', this, false)
    // __ob__的作用是标记这个对象是否转换成响应式数据了，可以通过obj.__ob__ 来获取Observer对象
    this.walk(obj)
  }
  walk(obj) {
    for (const key in obj) {
      defineReactive(obj, key)
    }
  }

}